package com.dd.cloud.user.req.aicms;

import lombok.Data;

import javax.validation.constraints.NotEmpty;
import java.io.Serializable;


/**
 * 诊断接口请求参数
 *
 * @author vodbook
 */
@Data
public class AskDoctorParams implements Serializable {
    private static final long serialVersionUID = 7564892302148735636L;
    @NotEmpty(message = "疾病序号不能为空,如：ZK_FUB")
    private String xuhao;// string 必填 疾病序号,如：ZK_FUB

    @NotEmpty(message = "症状ID不能为空，多个id由,号隔开。如:A2,B7,D4")
    private String ids;// string 必填 症状id集合，如:A2,B7,D4

    @NotEmpty(message = "病历号不能为空")
    private String BLH;// string 必填 病历号，全局唯一。

    @NotEmpty(message = "性别不能为空，性别。如：男，女，未知")
    private String XB;// string 必填 性别。如：男，女，未知

    @NotEmpty(message = "年龄不能为空")
    private String NL;// string 必填 年龄。如：45

    @NotEmpty(message = "族别不能为空，如：汉族，维族等")
    private String ZB;// string 必填 族别。如：汉族，维族

    @NotEmpty(message = "婚姻状况不能为空，如：未婚，已婚")
    private String HYZK;// string 必填 婚姻状况。如：未婚，已婚

    private String extern_id;// string 选填 外部扩展字段，


    @NotEmpty(message = "姓名不能为空")
    private String XM;// string 选填 姓名

    private String LXDH;// string 选填 联系电话

    private String TXDZ;// string 选填 通讯地址

    private String YYMC;// string 选填 医院名称

    private String UserID;// UserID string 必填 外部用户id

    private String UserType;// UserID string 必填 外部用户id

    private int ReportFlag;// ReportFlag int 选填 值等于1时分条目输出,已废弃

    private String SecretKey;// string 必填 秘钥。如：8c557ece17fc9ab484713daaa132087a

    @NotEmpty(message = "疾病名称不能为空")
    private String diseasename;// 疾病名称，比如：感冒

    @NotEmpty(message = "症状名称不能为空")
    private String zzName;// 症状名称

    /**
     * int 必填 是否需要确认。这个值与上次返回的nErrorCode配合使用，有特殊的含义，当： 1、nErrorCode
     * 小于0时，代表ids或者info输入有误，此时sResult与sErrorMsg是错误信息；特别的，
     * 当值等于-2时需要再次选择病症，无论有无选择病症都会出报告，此时flag值需要传65536； 二次可以选择的病症标记flag为1；
     * 2、nErrorCode 大于0时，代表需要二次用户确认，sResult是确认提示信息， 如果用户选择“是”则需要把flag值做为参数再次调用此接口.
     */
    private Integer flag;

    public String toJson(AskDoctorParams params) {
        return "{\"BLH\":\"" + params.BLH + "\",\"diseasename\":\"" + params.diseasename + "\",\"flag\":" + params.flag + ",\"HYZK\":\"" + params.HYZK + "\",\"ids\":\"" + params.ids + "\",\"LXDH\":\"" + params.LXDH + "\",\"NL\":\"" + params.NL + "\",\"ReportFlag\":0,\"SecretKey\":\"465de332295847bd9f509e46d32f114e\",\"XB\":\"" + params.XB + "\",\"XM\":\"" + params.XM + "\",\"xuhao\":\"" + params.xuhao + "\",\"ZB\":\"" + params.ZB + "\",\"zzName\":\"" + params.zzName + "\"}";
    }

    /**
     * 确认病是否符合信息
     *
     * @param diseaseName 疾病名称
     * @return
     */
    public String affirmDisease(String diseaseName) {
        //提示
        String hint = "";
        String nl = NL;
        if (NL.contains(".")) {
            nl = nl.split("\\.")[0];
        }
        int age = Integer.parseInt(nl);
        if (diseaseName.equals("阳痿") || diseaseName.equals("早泄") || diseaseName.equals("不射精") || diseaseName.equals("遗精") || diseaseName.equals("子痈") || diseaseName.equals("血精") || diseaseName.equals("精异不育") || diseaseName.equals("前列腺增生") || diseaseName.equals("阳强") || diseaseName.equals("前列腺炎") || diseaseName.equals("前列腺癌")) {
            if (XB.equals("女")) {
                hint = "你的性别不符合这种疾病";
            } else if (age <= 17) {
                hint = "你的年龄不符合这种疾病";
            }
        } else if (diseaseName.equals("不孕症") || diseaseName.equals("中药保胎") || diseaseName.equals("月经不 调") || diseaseName.equals("崩漏") || diseaseName.equals("痛经") || diseaseName.equals("盆腔炎") || diseaseName.equals("术后产后康复") || diseaseName.equals("子宫癌")) {
            if (XB.equals("男")) {
                hint = "你的性别不符合这种疾病";
            } else if (age <= 17) {
                hint = "你的年龄不符合这种疾病";
            }
        } else if (diseaseName.equals("小儿哮喘") || diseaseName.equals("小儿厌食") || diseaseName.equals("小儿泄泻") || diseaseName.equals("小儿痢疾") || diseaseName.equals("小儿腮腺炎") || diseaseName.equals("小儿感冒") || diseaseName.equals("小儿肺炎喘嗽") || diseaseName.equals("小儿支气管炎")) {
            if (age > 17) {
                hint = "你的年龄不符合这种疾病";
            }
        }
        if (age <= 12) {
            if ("已婚".equals(HYZK)) {
                hint = "该年龄已婚?";
            }
        }
        return hint;
    }
}
